﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using CuotaMensualServices.Persistencia;
using CuotaMensualServices.Dominio;

namespace CuotaMensualServices
{
    public class CuotasMensualesService : ICuotasMensualesService
    {
        private CuotaMensualDAO cuotamensualDAO = null;
        private CuotaMensualDAO CuotaMensualDAO
        {
            get
            {
                if (cuotamensualDAO == null)
                    cuotamensualDAO = new CuotaMensualDAO();
                return cuotamensualDAO;
            }
        }

        #region ICuotasMensuales Members

        public String CrearCuotaMensual(int torre, int dpto, double cuota)
        {
            var listaCM = ListarCuotasMensuales();
            CuotaMensual cm = ObtenerCuotaMensual(torre, dpto);

            String mensj = "";
            if (cm != null)
                mensj = "El pago del propietario ya está registrado";

            PropietariosWS.PropietarioServiceClient proxy = new PropietariosWS.PropietarioServiceClient();
            PropietariosWS.Propietario prop = proxy.ObtenerPropietario(torre, dpto);

            if (prop == null)
                mensj = "El propietario no se encuentra registrado en el condominio";

            if (mensj.Equals(""))
            {
                try
                {
                    CuotaMensual CuotaMensualACrear = new CuotaMensual()
                    {
                        Id = torre * 1000 + dpto,
                        Torre = torre,
                        Dpto = dpto,
                        Cuota = cuota
                    };
                    CuotaMensualDAO.Crear(CuotaMensualACrear);
                }
                catch
                {
                    mensj = "No se pudo registrar";
                }
            }
            return mensj;
        }

        public CuotaMensual ObtenerCuotaMensual(int torre, int dpto)
        {
            return CuotaMensualDAO.Obtener(torre * 1000 + dpto);
        }        

        public List<CuotaMensual> ListarCuotasMensuales()
        {
            return CuotaMensualDAO.ListarTodos().ToList();
        }

        #endregion
    }
}
